home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power Programmierung
/
Power-Programmierung (Tewi)(1994).iso
/
magazine
/
drdobbs
/
1987
/
02
/
basicex.lst
next >
Wrap
File List
|
1987-01-07
|
967b
|
49 lines
MODULE Factorial
PUBLIC Last_Fact ! Global variable
PRIVATE Bad_Number ! Local routine
DECLARE DEF Bad_Number ! Function declaration
SHARE Fact_Array(30), Product, MAX ! Local static variables
!------------ Initialize module -----------
let MAX = 30
let Last_Fact = Bad_Number
let Product = Bad_Number
IF MAX > 30 THEN MAT REDIM Fact_Array(MAX) ! Adjust array size
let Fact_Array(1) = 1
FOR I = 2 TO MAX
let Fact_Array(I) = I * Fact_Array(I-1)
NEXT I
!------------ LOCAL ROUTINES --------
DEF Bad_Number = -1.0E+200
!------------ EXPORTED ROUTINES -----
DEF Fact(N)
IF (INT(N) - N) <> 0 THEN
let Fact = Bad_Number
ELSE
let Last_Fact = Product
IF N <= MAX THEN
let Product = Fact_Array(N)
ELSE
let Product = Fact_Array(MAX)
FOR I = MAX+1 TO N
let Product = I * Product
NEXT I
END IF
let Fact = Product
END IF
END DEF
END MODULE